package com.ky.leetcode.剑指Offer;

/*

在字符串 s 中找出第一个只出现一次的字符。如果没有，返回一个单空格。 s 只包含小写字母。

    示例 1:
    输入：s = "abaccdeff"
    输出：'b'

    示例 2:
    输入：s = ""
    输出：' '

    限制：
    0 <= s 的长度 <= 50000

*/

import java.util.HashMap;
import java.util.Map;

public class 剑指Offer50第一个只出现一次的字符 {
    static class Solution {
        public char firstUniqChar(String s) {
            Map<Character, Integer> map = new HashMap<>();
            for (int i = 0; i < s.length(); i++) {
                if (map.containsKey(s.charAt(i)))
                    map.put(s.charAt(i), -1);
                else
                    map.put(s.charAt(i), i);
            }
            int first = s.length();
            for (Map.Entry<Character, Integer> entry : map.entrySet()) {
                if (entry.getValue() != -1 && entry.getValue() < first)
                    first = entry.getValue();
            }
            return first == s.length() ? ' ' : s.charAt(first);
        }
    }
}
